package GUI;

import java.awt.Container;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import javax.swing.ImageIcon;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;


/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
/**
 * Clase grafica que muestra una tabla creada dinamicamente en base a una consulta SQL.
 *
 */

@SuppressWarnings("serial")
public class VentanaTabla extends JFrame {
	protected Container panelContenedor;
	protected JTable tabla;
	protected DefaultTableModel modelo;
	protected ResultSet rs;
	protected JScrollPane scroll;
	
	
	/**
	 * Constructor que recibe los parametros necesarios para crear la ventana.
	 * @param tittle String que sera el titulo de la ventana.
	 * @param rs ResultSet que sera cargado en la tabla.
	 */
	public VentanaTabla(String tittle, ResultSet rs)
	{
		super(tittle);
		this.rs = rs;
		initGUI();
	}
	
	/**
	 * Metodo que inicializa la grafica.
	 */
	private void initGUI()
	{
		panelContenedor=this.getContentPane();
		this.setVisible(true);
		this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		this.setResizable(true);
		this.setIconImage(new ImageIcon(getClass().getClassLoader().getResource("Icon/Logo_Avion5.png")).getImage());

		modelo=new DefaultTableModel(){
			public boolean isCellEditable(int row, int column) {
				return false;
				}
		};
		tabla=new JTable(modelo);
		tabla.setVisible(true);
		
		scroll=new JScrollPane(tabla, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		tabla.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		scroll.setVisible(true);
		
		
		
		this.cargarDatos();
		
		for(int i=0;i<tabla.getColumnCount();i++){
			tabla.getColumnModel().getColumn(i).setMinWidth(100);
			tabla.getColumnModel().getColumn(i).setResizable(false);
		}
		
		if (tabla.getColumnCount()*100 + 50 >750){
			this.setBounds(0, 0, 750, tabla.getRowCount()*16 + 62 );
		}
		else{
		this.setBounds(0, 0, tabla.getColumnCount()*100 + 50, tabla.getRowCount()*16 + 62 );
		}
		scroll.setViewportView(tabla);
		panelContenedor.add(scroll);
		
		
	}
	
	
	/**
	 * Metodo que carga la tabla con los datos del ResultSet.
	 */
	public void cargarDatos()
	{
		// TABLA
		try 
		{
			ResultSetMetaData rsmd = rs.getMetaData();
			modelo.setColumnCount(rsmd.getColumnCount());
			Object rw[] = new Object [rsmd.getColumnCount()];
		
			
			// INICIALIZAMOS LOS ENCABEZADOS.
			for(int i = 0; i< rsmd.getColumnCount();i++)
			{
				String columnaNombre = rsmd.getColumnLabel(i+1);
				rw[i] = columnaNombre;
			}
				
			modelo.addRow(rw);
			
			// CARGAMOS EL CONTENIDO
			while(rs.next())
			{
	            for (int j = 1; j <= rsmd.getColumnCount(); j++)
	            {
	            	rw[j-1] = rs.getObject(j).toString();
	            }
	            modelo.addRow(rw);
			}
			
			
		} catch (SQLException e) {

			e.printStackTrace();
		}
	}
	
	
}
